/**
 * 工具函数测试
 * @description 验证工具函数的基本功能
 */

import {
  // 日期时间工具
  getCurrentDate,
  getCurrentTime,
  formatDateForDisplay,
  isValidDate,
  isValidTime,
  getDayOfWeek,
  generateInstanceDates,
  
  // 时间处理工具
  timeToMinutes,
  minutesToTime,
  isTimeRangeOverlap,
  detectTimeConflict,
  
  // 验证工具
  validateStudentData,
  validateCourseData,
  
  // 格式化工具
  formatCurrency,
  formatPercentage,
  formatDayOfWeek,
  formatStudentStatus,
  
  // 存储工具
  setLocalStorage,
  getLocalStorage,
  setStudentsData,
  getStudentsData
} from './index';

import { DayOfWeekEnum } from '@/types/schedule/enums';
import { StudentStatusEnum } from '@/types/student/enums';

/**
 * 测试工具函数
 */
export function testUtils() {
  console.log('=== 工具函数测试开始 ===');
  
  // 测试日期时间工具
  console.log('\n--- 日期时间工具测试 ---');
  console.log('当前日期:', getCurrentDate());
  console.log('当前时间:', getCurrentTime());
  console.log('格式化日期:', formatDateForDisplay('2024-03-15'));
  console.log('验证日期:', isValidDate('2024-03-15'));
  console.log('验证时间:', isValidTime('14:30'));
  console.log('获取星期几:', getDayOfWeek('2024-03-15'));
  
  // 测试时间处理工具
  console.log('\n--- 时间处理工具测试 ---');
  console.log('时间转分钟:', timeToMinutes('14:30'));
  console.log('分钟转时间:', minutesToTime(870));
  console.log('时间重叠检测:', isTimeRangeOverlap('09:00', '10:30', '10:00', '11:30'));
  
  // 测试验证工具
  console.log('\n--- 验证工具测试 ---');
  const studentData = {
    name: '张三',
    studentId: 'S001',
    status: StudentStatusEnum.ACTIVE
  };
  const studentValidation = validateStudentData(studentData);
  console.log('学生数据验证:', studentValidation.isValid ? '通过' : '失败');
  
  // 测试格式化工具
  console.log('\n--- 格式化工具测试 ---');
  console.log('格式化货币:', formatCurrency(1234.56));
  console.log('格式化百分比:', formatPercentage(0.85));
  console.log('格式化星期几:', formatDayOfWeek(DayOfWeekEnum.MONDAY));
  console.log('格式化学生状态:', formatStudentStatus(StudentStatusEnum.ACTIVE));
  
  // 测试存储工具
  console.log('\n--- 存储工具测试 ---');
  const testData = { test: 'data', timestamp: Date.now() };
  const setResult = setLocalStorage('test_key', testData);
  console.log('存储数据:', setResult.success ? '成功' : '失败');
  
  const getResult = getLocalStorage('test_key');
  console.log('读取数据:', getResult.success ? '成功' : '失败');
  console.log('数据内容:', getResult.data);
  
  // 测试业务存储
  const studentsData = [studentData];
  const setStudentsResult = setStudentsData(studentsData);
  console.log('存储学生数据:', setStudentsResult.success ? '成功' : '失败');
  
  const getStudentsResult = getStudentsData();
  console.log('读取学生数据:', getStudentsResult.success ? '成功' : '失败');
  
  console.log('\n=== 工具函数测试完成 ===');
}

// 如果直接运行此文件，执行测试
if (typeof window !== 'undefined') {
  // 浏览器环境
  (window as any).testUtils = testUtils;
  console.log('工具函数测试已加载，请在控制台运行 testUtils() 进行测试');
}